package main

import (
	"log"
	"os"
	"strings"
	"wave-admin/core"
	"wave-admin/global"
	"wave-admin/utils"
)

func main() {
	if ok, _ := utils.IsFileNotExist("./install.lock"); !ok {
		log.Println("请先删除./install.lock")
		os.Exit(1)
	}
	sqlFile := "./wave-admin.sql"
	dataExit, _ := utils.IsFileExist(sqlFile)
	if !dataExit {
		log.Println("数据库文件wave-admin.sql不存在")
		os.Exit(1)
	}
	global.GnVp = core.InitViper()   // 初始化Viper
	global.GnLog = core.InitLogger() // 初始化zap日志库

	// c := global.GnConfig.Mysql
	// database := fmt.Sprintf("%s:%s@tcp(%v)/?charset=utf8mb4", c.Username, c.Password, c.Addr)
	// log.Println("db连接=", database)
	// initDb, err := sql.Open("mysql", database)
	// log.Println(initDb, err)
	// if err != nil {
	// 	log.Println("连接数据库失败", err)
	// }
	// _, err = initDb.Exec(fmt.Sprintf("CREATE DATABASE `%s`", c.Dbname))

	// if err != nil {
	// 	log.Println("创建数据库失败", err)
	// }
	// initDb.Close()

	global.GnDb = core.InitGorm() // 初始化数据库
	if global.GnDb != nil {
		// 程序结束前关闭数据库链接
		db, _ := global.GnDb.DB()
		defer db.Close()
	}

	sqls, _ := os.ReadFile(sqlFile)
	sqlArr := strings.Split(string(sqls), ";")
	for _, sql := range sqlArr {
		sql = strings.TrimSpace(sql)
		if sql == "" {
			continue
		}
		log.Println("sql=", sql)
		err := global.GnDb.Exec(sql).Error
		if err == nil {
			log.Println("success!")
		} else {
			log.Println(err, "failed!")
			os.Exit(1)
		}
	}
	installFile, _ := os.OpenFile("./install.lock", os.O_RDWR|os.O_CREATE, os.ModePerm)
	installFile.WriteString("wave admin sql init")
}
